import type { App } from './types'
import { ipcRenderer } from 'electron'

const app: App = {
  sendMessage: (channel, data) => {
    ipcRenderer.send(channel, data)
  },
  onMessage: (channel, callback) => {
    const listener = (_event, ...args) => callback(...args)
    ipcRenderer.on(channel, listener)
    // 返回一个函数，用于移除监听器
    return () => {
      ipcRenderer.off(channel, listener)
    }
  },
  // 切换主题
  useDark: (isDark) => {
    ipcRenderer.send('useDark', isDark)
  },
  // 退出应用
  quit: () => {
    ipcRenderer.invoke('quit')
  },
  // 重启应用
  restart: () => {
    ipcRenderer.invoke('restart')
  },
  // 获取系统信息
  getSystemInfo: () => {
    return ipcRenderer.invoke('getSystemInfo')
  },
  // 设置配置信息
  setConfig(config, type) {
    const cType = type || 'app'
    return ipcRenderer.invoke('setConfig', config, cType)
  },
  // 获取配置信息
  getConfig: (type) => {
    const cType = type || 'app'
    return ipcRenderer.invoke('getConfig', cType)
  },
  // 是否设置开机自启
  isAutoLaunchEnabled: () => {
    return ipcRenderer.invoke('isAutoLaunchEnabled')
  },
  // 设置开机自启
  setAutoLaunch: () => {
    return ipcRenderer.invoke('setAutoLaunch')
  },
  // 关闭开机自启
  unsetAutoLaunch: () => {
    return ipcRenderer.invoke('unsetAutoLaunch')
  },
  // 启动服务
  startServer: () => {
    return ipcRenderer.invoke('startServer')
  },
  // 停止服务
  stopServer: () => {
    return ipcRenderer.invoke('stopServer')
  },
  // 重启服务
  restartServer: async () => {
    await ipcRenderer.invoke('stopServer')
    return ipcRenderer.invoke('startServer')
  }
}

export default app
